/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.taobao.ibatiside.model.configv2.impl;

import java.math.BigInteger;

import org.eclipse.emf.common.notify.Notification;

import org.eclipse.emf.ecore.EClass;

import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.EObjectImpl;

import org.taobao.ibatiside.model.configv2.Configv2Package;
import org.taobao.ibatiside.model.configv2.SettingsType;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model object '<em><b>Settings Type</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * The following features are implemented:
 * <ul>
 *   <li>{@link org.taobao.ibatiside.model.configv2.impl.SettingsTypeImpl#isCacheModelsEnabled <em>Cache Models Enabled</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv2.impl.SettingsTypeImpl#isClassInfoCacheEnabled <em>Class Info Cache Enabled</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv2.impl.SettingsTypeImpl#getDefaultStatementTimeout <em>Default Statement Timeout</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv2.impl.SettingsTypeImpl#isEnhancementEnabled <em>Enhancement Enabled</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv2.impl.SettingsTypeImpl#isErrorTracingEnabled <em>Error Tracing Enabled</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv2.impl.SettingsTypeImpl#isForceMultipleResultSetSupport <em>Force Multiple Result Set Support</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv2.impl.SettingsTypeImpl#isLazyLoadingEnabled <em>Lazy Loading Enabled</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv2.impl.SettingsTypeImpl#getMaxRequests <em>Max Requests</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv2.impl.SettingsTypeImpl#getMaxSessions <em>Max Sessions</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv2.impl.SettingsTypeImpl#getMaxTransactions <em>Max Transactions</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv2.impl.SettingsTypeImpl#isStatementCachingEnabled <em>Statement Caching Enabled</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv2.impl.SettingsTypeImpl#isUseColumnLabel <em>Use Column Label</em>}</li>
 *   <li>{@link org.taobao.ibatiside.model.configv2.impl.SettingsTypeImpl#isUseStatementNamespaces <em>Use Statement Namespaces</em>}</li>
 * </ul>
 * </p>
 *
 * @generated
 */
public class SettingsTypeImpl extends EObjectImpl implements SettingsType {
	/**
	 * The default value of the '{@link #isCacheModelsEnabled() <em>Cache Models Enabled</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isCacheModelsEnabled()
	 * @generated
	 * @ordered
	 */
	protected static final boolean CACHE_MODELS_ENABLED_EDEFAULT = false;

	/**
	 * The cached value of the '{@link #isCacheModelsEnabled() <em>Cache Models Enabled</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isCacheModelsEnabled()
	 * @generated
	 * @ordered
	 */
	protected boolean cacheModelsEnabled = CACHE_MODELS_ENABLED_EDEFAULT;

	/**
	 * This is true if the Cache Models Enabled attribute has been set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	protected boolean cacheModelsEnabledESet;

	/**
	 * The default value of the '{@link #isClassInfoCacheEnabled() <em>Class Info Cache Enabled</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isClassInfoCacheEnabled()
	 * @generated
	 * @ordered
	 */
	protected static final boolean CLASS_INFO_CACHE_ENABLED_EDEFAULT = false;

	/**
	 * The cached value of the '{@link #isClassInfoCacheEnabled() <em>Class Info Cache Enabled</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isClassInfoCacheEnabled()
	 * @generated
	 * @ordered
	 */
	protected boolean classInfoCacheEnabled = CLASS_INFO_CACHE_ENABLED_EDEFAULT;

	/**
	 * This is true if the Class Info Cache Enabled attribute has been set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	protected boolean classInfoCacheEnabledESet;

	/**
	 * The default value of the '{@link #getDefaultStatementTimeout() <em>Default Statement Timeout</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getDefaultStatementTimeout()
	 * @generated
	 * @ordered
	 */
	protected static final BigInteger DEFAULT_STATEMENT_TIMEOUT_EDEFAULT = null;

	/**
	 * The cached value of the '{@link #getDefaultStatementTimeout() <em>Default Statement Timeout</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getDefaultStatementTimeout()
	 * @generated
	 * @ordered
	 */
	protected BigInteger defaultStatementTimeout = DEFAULT_STATEMENT_TIMEOUT_EDEFAULT;

	/**
	 * The default value of the '{@link #isEnhancementEnabled() <em>Enhancement Enabled</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isEnhancementEnabled()
	 * @generated
	 * @ordered
	 */
	protected static final boolean ENHANCEMENT_ENABLED_EDEFAULT = false;

	/**
	 * The cached value of the '{@link #isEnhancementEnabled() <em>Enhancement Enabled</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isEnhancementEnabled()
	 * @generated
	 * @ordered
	 */
	protected boolean enhancementEnabled = ENHANCEMENT_ENABLED_EDEFAULT;

	/**
	 * This is true if the Enhancement Enabled attribute has been set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	protected boolean enhancementEnabledESet;

	/**
	 * The default value of the '{@link #isErrorTracingEnabled() <em>Error Tracing Enabled</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isErrorTracingEnabled()
	 * @generated
	 * @ordered
	 */
	protected static final boolean ERROR_TRACING_ENABLED_EDEFAULT = false;

	/**
	 * The cached value of the '{@link #isErrorTracingEnabled() <em>Error Tracing Enabled</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isErrorTracingEnabled()
	 * @generated
	 * @ordered
	 */
	protected boolean errorTracingEnabled = ERROR_TRACING_ENABLED_EDEFAULT;

	/**
	 * This is true if the Error Tracing Enabled attribute has been set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	protected boolean errorTracingEnabledESet;

	/**
	 * The default value of the '{@link #isForceMultipleResultSetSupport() <em>Force Multiple Result Set Support</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isForceMultipleResultSetSupport()
	 * @generated
	 * @ordered
	 */
	protected static final boolean FORCE_MULTIPLE_RESULT_SET_SUPPORT_EDEFAULT = false;

	/**
	 * The cached value of the '{@link #isForceMultipleResultSetSupport() <em>Force Multiple Result Set Support</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isForceMultipleResultSetSupport()
	 * @generated
	 * @ordered
	 */
	protected boolean forceMultipleResultSetSupport = FORCE_MULTIPLE_RESULT_SET_SUPPORT_EDEFAULT;

	/**
	 * This is true if the Force Multiple Result Set Support attribute has been set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	protected boolean forceMultipleResultSetSupportESet;

	/**
	 * The default value of the '{@link #isLazyLoadingEnabled() <em>Lazy Loading Enabled</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isLazyLoadingEnabled()
	 * @generated
	 * @ordered
	 */
	protected static final boolean LAZY_LOADING_ENABLED_EDEFAULT = false;

	/**
	 * The cached value of the '{@link #isLazyLoadingEnabled() <em>Lazy Loading Enabled</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isLazyLoadingEnabled()
	 * @generated
	 * @ordered
	 */
	protected boolean lazyLoadingEnabled = LAZY_LOADING_ENABLED_EDEFAULT;

	/**
	 * This is true if the Lazy Loading Enabled attribute has been set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	protected boolean lazyLoadingEnabledESet;

	/**
	 * The default value of the '{@link #getMaxRequests() <em>Max Requests</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMaxRequests()
	 * @generated
	 * @ordered
	 */
	protected static final BigInteger MAX_REQUESTS_EDEFAULT = null;

	/**
	 * The cached value of the '{@link #getMaxRequests() <em>Max Requests</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMaxRequests()
	 * @generated
	 * @ordered
	 */
	protected BigInteger maxRequests = MAX_REQUESTS_EDEFAULT;

	/**
	 * The default value of the '{@link #getMaxSessions() <em>Max Sessions</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMaxSessions()
	 * @generated
	 * @ordered
	 */
	protected static final BigInteger MAX_SESSIONS_EDEFAULT = null;

	/**
	 * The cached value of the '{@link #getMaxSessions() <em>Max Sessions</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMaxSessions()
	 * @generated
	 * @ordered
	 */
	protected BigInteger maxSessions = MAX_SESSIONS_EDEFAULT;

	/**
	 * The default value of the '{@link #getMaxTransactions() <em>Max Transactions</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMaxTransactions()
	 * @generated
	 * @ordered
	 */
	protected static final BigInteger MAX_TRANSACTIONS_EDEFAULT = null;

	/**
	 * The cached value of the '{@link #getMaxTransactions() <em>Max Transactions</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #getMaxTransactions()
	 * @generated
	 * @ordered
	 */
	protected BigInteger maxTransactions = MAX_TRANSACTIONS_EDEFAULT;

	/**
	 * The default value of the '{@link #isStatementCachingEnabled() <em>Statement Caching Enabled</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isStatementCachingEnabled()
	 * @generated
	 * @ordered
	 */
	protected static final boolean STATEMENT_CACHING_ENABLED_EDEFAULT = false;

	/**
	 * The cached value of the '{@link #isStatementCachingEnabled() <em>Statement Caching Enabled</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isStatementCachingEnabled()
	 * @generated
	 * @ordered
	 */
	protected boolean statementCachingEnabled = STATEMENT_CACHING_ENABLED_EDEFAULT;

	/**
	 * This is true if the Statement Caching Enabled attribute has been set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	protected boolean statementCachingEnabledESet;

	/**
	 * The default value of the '{@link #isUseColumnLabel() <em>Use Column Label</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isUseColumnLabel()
	 * @generated
	 * @ordered
	 */
	protected static final boolean USE_COLUMN_LABEL_EDEFAULT = false;

	/**
	 * The cached value of the '{@link #isUseColumnLabel() <em>Use Column Label</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isUseColumnLabel()
	 * @generated
	 * @ordered
	 */
	protected boolean useColumnLabel = USE_COLUMN_LABEL_EDEFAULT;

	/**
	 * This is true if the Use Column Label attribute has been set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	protected boolean useColumnLabelESet;

	/**
	 * The default value of the '{@link #isUseStatementNamespaces() <em>Use Statement Namespaces</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isUseStatementNamespaces()
	 * @generated
	 * @ordered
	 */
	protected static final boolean USE_STATEMENT_NAMESPACES_EDEFAULT = false;

	/**
	 * The cached value of the '{@link #isUseStatementNamespaces() <em>Use Statement Namespaces</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #isUseStatementNamespaces()
	 * @generated
	 * @ordered
	 */
	protected boolean useStatementNamespaces = USE_STATEMENT_NAMESPACES_EDEFAULT;

	/**
	 * This is true if the Use Statement Namespaces attribute has been set.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 * @ordered
	 */
	protected boolean useStatementNamespacesESet;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SettingsTypeImpl() {
		super();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected EClass eStaticClass() {
		return Configv2Package.Literals.SETTINGS_TYPE;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isCacheModelsEnabled() {
		return cacheModelsEnabled;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setCacheModelsEnabled(boolean newCacheModelsEnabled) {
		boolean oldCacheModelsEnabled = cacheModelsEnabled;
		cacheModelsEnabled = newCacheModelsEnabled;
		boolean oldCacheModelsEnabledESet = cacheModelsEnabledESet;
		cacheModelsEnabledESet = true;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, Configv2Package.SETTINGS_TYPE__CACHE_MODELS_ENABLED, oldCacheModelsEnabled, cacheModelsEnabled, !oldCacheModelsEnabledESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void unsetCacheModelsEnabled() {
		boolean oldCacheModelsEnabled = cacheModelsEnabled;
		boolean oldCacheModelsEnabledESet = cacheModelsEnabledESet;
		cacheModelsEnabled = CACHE_MODELS_ENABLED_EDEFAULT;
		cacheModelsEnabledESet = false;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.UNSET, Configv2Package.SETTINGS_TYPE__CACHE_MODELS_ENABLED, oldCacheModelsEnabled, CACHE_MODELS_ENABLED_EDEFAULT, oldCacheModelsEnabledESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isSetCacheModelsEnabled() {
		return cacheModelsEnabledESet;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isClassInfoCacheEnabled() {
		return classInfoCacheEnabled;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setClassInfoCacheEnabled(boolean newClassInfoCacheEnabled) {
		boolean oldClassInfoCacheEnabled = classInfoCacheEnabled;
		classInfoCacheEnabled = newClassInfoCacheEnabled;
		boolean oldClassInfoCacheEnabledESet = classInfoCacheEnabledESet;
		classInfoCacheEnabledESet = true;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, Configv2Package.SETTINGS_TYPE__CLASS_INFO_CACHE_ENABLED, oldClassInfoCacheEnabled, classInfoCacheEnabled, !oldClassInfoCacheEnabledESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void unsetClassInfoCacheEnabled() {
		boolean oldClassInfoCacheEnabled = classInfoCacheEnabled;
		boolean oldClassInfoCacheEnabledESet = classInfoCacheEnabledESet;
		classInfoCacheEnabled = CLASS_INFO_CACHE_ENABLED_EDEFAULT;
		classInfoCacheEnabledESet = false;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.UNSET, Configv2Package.SETTINGS_TYPE__CLASS_INFO_CACHE_ENABLED, oldClassInfoCacheEnabled, CLASS_INFO_CACHE_ENABLED_EDEFAULT, oldClassInfoCacheEnabledESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isSetClassInfoCacheEnabled() {
		return classInfoCacheEnabledESet;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public BigInteger getDefaultStatementTimeout() {
		return defaultStatementTimeout;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setDefaultStatementTimeout(BigInteger newDefaultStatementTimeout) {
		BigInteger oldDefaultStatementTimeout = defaultStatementTimeout;
		defaultStatementTimeout = newDefaultStatementTimeout;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, Configv2Package.SETTINGS_TYPE__DEFAULT_STATEMENT_TIMEOUT, oldDefaultStatementTimeout, defaultStatementTimeout));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isEnhancementEnabled() {
		return enhancementEnabled;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setEnhancementEnabled(boolean newEnhancementEnabled) {
		boolean oldEnhancementEnabled = enhancementEnabled;
		enhancementEnabled = newEnhancementEnabled;
		boolean oldEnhancementEnabledESet = enhancementEnabledESet;
		enhancementEnabledESet = true;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, Configv2Package.SETTINGS_TYPE__ENHANCEMENT_ENABLED, oldEnhancementEnabled, enhancementEnabled, !oldEnhancementEnabledESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void unsetEnhancementEnabled() {
		boolean oldEnhancementEnabled = enhancementEnabled;
		boolean oldEnhancementEnabledESet = enhancementEnabledESet;
		enhancementEnabled = ENHANCEMENT_ENABLED_EDEFAULT;
		enhancementEnabledESet = false;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.UNSET, Configv2Package.SETTINGS_TYPE__ENHANCEMENT_ENABLED, oldEnhancementEnabled, ENHANCEMENT_ENABLED_EDEFAULT, oldEnhancementEnabledESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isSetEnhancementEnabled() {
		return enhancementEnabledESet;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isErrorTracingEnabled() {
		return errorTracingEnabled;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setErrorTracingEnabled(boolean newErrorTracingEnabled) {
		boolean oldErrorTracingEnabled = errorTracingEnabled;
		errorTracingEnabled = newErrorTracingEnabled;
		boolean oldErrorTracingEnabledESet = errorTracingEnabledESet;
		errorTracingEnabledESet = true;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, Configv2Package.SETTINGS_TYPE__ERROR_TRACING_ENABLED, oldErrorTracingEnabled, errorTracingEnabled, !oldErrorTracingEnabledESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void unsetErrorTracingEnabled() {
		boolean oldErrorTracingEnabled = errorTracingEnabled;
		boolean oldErrorTracingEnabledESet = errorTracingEnabledESet;
		errorTracingEnabled = ERROR_TRACING_ENABLED_EDEFAULT;
		errorTracingEnabledESet = false;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.UNSET, Configv2Package.SETTINGS_TYPE__ERROR_TRACING_ENABLED, oldErrorTracingEnabled, ERROR_TRACING_ENABLED_EDEFAULT, oldErrorTracingEnabledESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isSetErrorTracingEnabled() {
		return errorTracingEnabledESet;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isForceMultipleResultSetSupport() {
		return forceMultipleResultSetSupport;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setForceMultipleResultSetSupport(boolean newForceMultipleResultSetSupport) {
		boolean oldForceMultipleResultSetSupport = forceMultipleResultSetSupport;
		forceMultipleResultSetSupport = newForceMultipleResultSetSupport;
		boolean oldForceMultipleResultSetSupportESet = forceMultipleResultSetSupportESet;
		forceMultipleResultSetSupportESet = true;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, Configv2Package.SETTINGS_TYPE__FORCE_MULTIPLE_RESULT_SET_SUPPORT, oldForceMultipleResultSetSupport, forceMultipleResultSetSupport, !oldForceMultipleResultSetSupportESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void unsetForceMultipleResultSetSupport() {
		boolean oldForceMultipleResultSetSupport = forceMultipleResultSetSupport;
		boolean oldForceMultipleResultSetSupportESet = forceMultipleResultSetSupportESet;
		forceMultipleResultSetSupport = FORCE_MULTIPLE_RESULT_SET_SUPPORT_EDEFAULT;
		forceMultipleResultSetSupportESet = false;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.UNSET, Configv2Package.SETTINGS_TYPE__FORCE_MULTIPLE_RESULT_SET_SUPPORT, oldForceMultipleResultSetSupport, FORCE_MULTIPLE_RESULT_SET_SUPPORT_EDEFAULT, oldForceMultipleResultSetSupportESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isSetForceMultipleResultSetSupport() {
		return forceMultipleResultSetSupportESet;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isLazyLoadingEnabled() {
		return lazyLoadingEnabled;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setLazyLoadingEnabled(boolean newLazyLoadingEnabled) {
		boolean oldLazyLoadingEnabled = lazyLoadingEnabled;
		lazyLoadingEnabled = newLazyLoadingEnabled;
		boolean oldLazyLoadingEnabledESet = lazyLoadingEnabledESet;
		lazyLoadingEnabledESet = true;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, Configv2Package.SETTINGS_TYPE__LAZY_LOADING_ENABLED, oldLazyLoadingEnabled, lazyLoadingEnabled, !oldLazyLoadingEnabledESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void unsetLazyLoadingEnabled() {
		boolean oldLazyLoadingEnabled = lazyLoadingEnabled;
		boolean oldLazyLoadingEnabledESet = lazyLoadingEnabledESet;
		lazyLoadingEnabled = LAZY_LOADING_ENABLED_EDEFAULT;
		lazyLoadingEnabledESet = false;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.UNSET, Configv2Package.SETTINGS_TYPE__LAZY_LOADING_ENABLED, oldLazyLoadingEnabled, LAZY_LOADING_ENABLED_EDEFAULT, oldLazyLoadingEnabledESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isSetLazyLoadingEnabled() {
		return lazyLoadingEnabledESet;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public BigInteger getMaxRequests() {
		return maxRequests;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMaxRequests(BigInteger newMaxRequests) {
		BigInteger oldMaxRequests = maxRequests;
		maxRequests = newMaxRequests;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, Configv2Package.SETTINGS_TYPE__MAX_REQUESTS, oldMaxRequests, maxRequests));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public BigInteger getMaxSessions() {
		return maxSessions;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMaxSessions(BigInteger newMaxSessions) {
		BigInteger oldMaxSessions = maxSessions;
		maxSessions = newMaxSessions;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, Configv2Package.SETTINGS_TYPE__MAX_SESSIONS, oldMaxSessions, maxSessions));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public BigInteger getMaxTransactions() {
		return maxTransactions;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setMaxTransactions(BigInteger newMaxTransactions) {
		BigInteger oldMaxTransactions = maxTransactions;
		maxTransactions = newMaxTransactions;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, Configv2Package.SETTINGS_TYPE__MAX_TRANSACTIONS, oldMaxTransactions, maxTransactions));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isStatementCachingEnabled() {
		return statementCachingEnabled;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setStatementCachingEnabled(boolean newStatementCachingEnabled) {
		boolean oldStatementCachingEnabled = statementCachingEnabled;
		statementCachingEnabled = newStatementCachingEnabled;
		boolean oldStatementCachingEnabledESet = statementCachingEnabledESet;
		statementCachingEnabledESet = true;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, Configv2Package.SETTINGS_TYPE__STATEMENT_CACHING_ENABLED, oldStatementCachingEnabled, statementCachingEnabled, !oldStatementCachingEnabledESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void unsetStatementCachingEnabled() {
		boolean oldStatementCachingEnabled = statementCachingEnabled;
		boolean oldStatementCachingEnabledESet = statementCachingEnabledESet;
		statementCachingEnabled = STATEMENT_CACHING_ENABLED_EDEFAULT;
		statementCachingEnabledESet = false;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.UNSET, Configv2Package.SETTINGS_TYPE__STATEMENT_CACHING_ENABLED, oldStatementCachingEnabled, STATEMENT_CACHING_ENABLED_EDEFAULT, oldStatementCachingEnabledESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isSetStatementCachingEnabled() {
		return statementCachingEnabledESet;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isUseColumnLabel() {
		return useColumnLabel;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setUseColumnLabel(boolean newUseColumnLabel) {
		boolean oldUseColumnLabel = useColumnLabel;
		useColumnLabel = newUseColumnLabel;
		boolean oldUseColumnLabelESet = useColumnLabelESet;
		useColumnLabelESet = true;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, Configv2Package.SETTINGS_TYPE__USE_COLUMN_LABEL, oldUseColumnLabel, useColumnLabel, !oldUseColumnLabelESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void unsetUseColumnLabel() {
		boolean oldUseColumnLabel = useColumnLabel;
		boolean oldUseColumnLabelESet = useColumnLabelESet;
		useColumnLabel = USE_COLUMN_LABEL_EDEFAULT;
		useColumnLabelESet = false;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.UNSET, Configv2Package.SETTINGS_TYPE__USE_COLUMN_LABEL, oldUseColumnLabel, USE_COLUMN_LABEL_EDEFAULT, oldUseColumnLabelESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isSetUseColumnLabel() {
		return useColumnLabelESet;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isUseStatementNamespaces() {
		return useStatementNamespaces;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setUseStatementNamespaces(boolean newUseStatementNamespaces) {
		boolean oldUseStatementNamespaces = useStatementNamespaces;
		useStatementNamespaces = newUseStatementNamespaces;
		boolean oldUseStatementNamespacesESet = useStatementNamespacesESet;
		useStatementNamespacesESet = true;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.SET, Configv2Package.SETTINGS_TYPE__USE_STATEMENT_NAMESPACES, oldUseStatementNamespaces, useStatementNamespaces, !oldUseStatementNamespacesESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void unsetUseStatementNamespaces() {
		boolean oldUseStatementNamespaces = useStatementNamespaces;
		boolean oldUseStatementNamespacesESet = useStatementNamespacesESet;
		useStatementNamespaces = USE_STATEMENT_NAMESPACES_EDEFAULT;
		useStatementNamespacesESet = false;
		if (eNotificationRequired())
			eNotify(new ENotificationImpl(this, Notification.UNSET, Configv2Package.SETTINGS_TYPE__USE_STATEMENT_NAMESPACES, oldUseStatementNamespaces, USE_STATEMENT_NAMESPACES_EDEFAULT, oldUseStatementNamespacesESet));
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public boolean isSetUseStatementNamespaces() {
		return useStatementNamespacesESet;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object eGet(int featureID, boolean resolve, boolean coreType) {
		switch (featureID) {
			case Configv2Package.SETTINGS_TYPE__CACHE_MODELS_ENABLED:
				return isCacheModelsEnabled();
			case Configv2Package.SETTINGS_TYPE__CLASS_INFO_CACHE_ENABLED:
				return isClassInfoCacheEnabled();
			case Configv2Package.SETTINGS_TYPE__DEFAULT_STATEMENT_TIMEOUT:
				return getDefaultStatementTimeout();
			case Configv2Package.SETTINGS_TYPE__ENHANCEMENT_ENABLED:
				return isEnhancementEnabled();
			case Configv2Package.SETTINGS_TYPE__ERROR_TRACING_ENABLED:
				return isErrorTracingEnabled();
			case Configv2Package.SETTINGS_TYPE__FORCE_MULTIPLE_RESULT_SET_SUPPORT:
				return isForceMultipleResultSetSupport();
			case Configv2Package.SETTINGS_TYPE__LAZY_LOADING_ENABLED:
				return isLazyLoadingEnabled();
			case Configv2Package.SETTINGS_TYPE__MAX_REQUESTS:
				return getMaxRequests();
			case Configv2Package.SETTINGS_TYPE__MAX_SESSIONS:
				return getMaxSessions();
			case Configv2Package.SETTINGS_TYPE__MAX_TRANSACTIONS:
				return getMaxTransactions();
			case Configv2Package.SETTINGS_TYPE__STATEMENT_CACHING_ENABLED:
				return isStatementCachingEnabled();
			case Configv2Package.SETTINGS_TYPE__USE_COLUMN_LABEL:
				return isUseColumnLabel();
			case Configv2Package.SETTINGS_TYPE__USE_STATEMENT_NAMESPACES:
				return isUseStatementNamespaces();
		}
		return super.eGet(featureID, resolve, coreType);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eSet(int featureID, Object newValue) {
		switch (featureID) {
			case Configv2Package.SETTINGS_TYPE__CACHE_MODELS_ENABLED:
				setCacheModelsEnabled((Boolean)newValue);
				return;
			case Configv2Package.SETTINGS_TYPE__CLASS_INFO_CACHE_ENABLED:
				setClassInfoCacheEnabled((Boolean)newValue);
				return;
			case Configv2Package.SETTINGS_TYPE__DEFAULT_STATEMENT_TIMEOUT:
				setDefaultStatementTimeout((BigInteger)newValue);
				return;
			case Configv2Package.SETTINGS_TYPE__ENHANCEMENT_ENABLED:
				setEnhancementEnabled((Boolean)newValue);
				return;
			case Configv2Package.SETTINGS_TYPE__ERROR_TRACING_ENABLED:
				setErrorTracingEnabled((Boolean)newValue);
				return;
			case Configv2Package.SETTINGS_TYPE__FORCE_MULTIPLE_RESULT_SET_SUPPORT:
				setForceMultipleResultSetSupport((Boolean)newValue);
				return;
			case Configv2Package.SETTINGS_TYPE__LAZY_LOADING_ENABLED:
				setLazyLoadingEnabled((Boolean)newValue);
				return;
			case Configv2Package.SETTINGS_TYPE__MAX_REQUESTS:
				setMaxRequests((BigInteger)newValue);
				return;
			case Configv2Package.SETTINGS_TYPE__MAX_SESSIONS:
				setMaxSessions((BigInteger)newValue);
				return;
			case Configv2Package.SETTINGS_TYPE__MAX_TRANSACTIONS:
				setMaxTransactions((BigInteger)newValue);
				return;
			case Configv2Package.SETTINGS_TYPE__STATEMENT_CACHING_ENABLED:
				setStatementCachingEnabled((Boolean)newValue);
				return;
			case Configv2Package.SETTINGS_TYPE__USE_COLUMN_LABEL:
				setUseColumnLabel((Boolean)newValue);
				return;
			case Configv2Package.SETTINGS_TYPE__USE_STATEMENT_NAMESPACES:
				setUseStatementNamespaces((Boolean)newValue);
				return;
		}
		super.eSet(featureID, newValue);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void eUnset(int featureID) {
		switch (featureID) {
			case Configv2Package.SETTINGS_TYPE__CACHE_MODELS_ENABLED:
				unsetCacheModelsEnabled();
				return;
			case Configv2Package.SETTINGS_TYPE__CLASS_INFO_CACHE_ENABLED:
				unsetClassInfoCacheEnabled();
				return;
			case Configv2Package.SETTINGS_TYPE__DEFAULT_STATEMENT_TIMEOUT:
				setDefaultStatementTimeout(DEFAULT_STATEMENT_TIMEOUT_EDEFAULT);
				return;
			case Configv2Package.SETTINGS_TYPE__ENHANCEMENT_ENABLED:
				unsetEnhancementEnabled();
				return;
			case Configv2Package.SETTINGS_TYPE__ERROR_TRACING_ENABLED:
				unsetErrorTracingEnabled();
				return;
			case Configv2Package.SETTINGS_TYPE__FORCE_MULTIPLE_RESULT_SET_SUPPORT:
				unsetForceMultipleResultSetSupport();
				return;
			case Configv2Package.SETTINGS_TYPE__LAZY_LOADING_ENABLED:
				unsetLazyLoadingEnabled();
				return;
			case Configv2Package.SETTINGS_TYPE__MAX_REQUESTS:
				setMaxRequests(MAX_REQUESTS_EDEFAULT);
				return;
			case Configv2Package.SETTINGS_TYPE__MAX_SESSIONS:
				setMaxSessions(MAX_SESSIONS_EDEFAULT);
				return;
			case Configv2Package.SETTINGS_TYPE__MAX_TRANSACTIONS:
				setMaxTransactions(MAX_TRANSACTIONS_EDEFAULT);
				return;
			case Configv2Package.SETTINGS_TYPE__STATEMENT_CACHING_ENABLED:
				unsetStatementCachingEnabled();
				return;
			case Configv2Package.SETTINGS_TYPE__USE_COLUMN_LABEL:
				unsetUseColumnLabel();
				return;
			case Configv2Package.SETTINGS_TYPE__USE_STATEMENT_NAMESPACES:
				unsetUseStatementNamespaces();
				return;
		}
		super.eUnset(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean eIsSet(int featureID) {
		switch (featureID) {
			case Configv2Package.SETTINGS_TYPE__CACHE_MODELS_ENABLED:
				return isSetCacheModelsEnabled();
			case Configv2Package.SETTINGS_TYPE__CLASS_INFO_CACHE_ENABLED:
				return isSetClassInfoCacheEnabled();
			case Configv2Package.SETTINGS_TYPE__DEFAULT_STATEMENT_TIMEOUT:
				return DEFAULT_STATEMENT_TIMEOUT_EDEFAULT == null ? defaultStatementTimeout != null : !DEFAULT_STATEMENT_TIMEOUT_EDEFAULT.equals(defaultStatementTimeout);
			case Configv2Package.SETTINGS_TYPE__ENHANCEMENT_ENABLED:
				return isSetEnhancementEnabled();
			case Configv2Package.SETTINGS_TYPE__ERROR_TRACING_ENABLED:
				return isSetErrorTracingEnabled();
			case Configv2Package.SETTINGS_TYPE__FORCE_MULTIPLE_RESULT_SET_SUPPORT:
				return isSetForceMultipleResultSetSupport();
			case Configv2Package.SETTINGS_TYPE__LAZY_LOADING_ENABLED:
				return isSetLazyLoadingEnabled();
			case Configv2Package.SETTINGS_TYPE__MAX_REQUESTS:
				return MAX_REQUESTS_EDEFAULT == null ? maxRequests != null : !MAX_REQUESTS_EDEFAULT.equals(maxRequests);
			case Configv2Package.SETTINGS_TYPE__MAX_SESSIONS:
				return MAX_SESSIONS_EDEFAULT == null ? maxSessions != null : !MAX_SESSIONS_EDEFAULT.equals(maxSessions);
			case Configv2Package.SETTINGS_TYPE__MAX_TRANSACTIONS:
				return MAX_TRANSACTIONS_EDEFAULT == null ? maxTransactions != null : !MAX_TRANSACTIONS_EDEFAULT.equals(maxTransactions);
			case Configv2Package.SETTINGS_TYPE__STATEMENT_CACHING_ENABLED:
				return isSetStatementCachingEnabled();
			case Configv2Package.SETTINGS_TYPE__USE_COLUMN_LABEL:
				return isSetUseColumnLabel();
			case Configv2Package.SETTINGS_TYPE__USE_STATEMENT_NAMESPACES:
				return isSetUseStatementNamespaces();
		}
		return super.eIsSet(featureID);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public String toString() {
		if (eIsProxy()) return super.toString();

		StringBuffer result = new StringBuffer(super.toString());
		result.append(" (cacheModelsEnabled: ");
		if (cacheModelsEnabledESet) result.append(cacheModelsEnabled); else result.append("<unset>");
		result.append(", classInfoCacheEnabled: ");
		if (classInfoCacheEnabledESet) result.append(classInfoCacheEnabled); else result.append("<unset>");
		result.append(", defaultStatementTimeout: ");
		result.append(defaultStatementTimeout);
		result.append(", enhancementEnabled: ");
		if (enhancementEnabledESet) result.append(enhancementEnabled); else result.append("<unset>");
		result.append(", errorTracingEnabled: ");
		if (errorTracingEnabledESet) result.append(errorTracingEnabled); else result.append("<unset>");
		result.append(", forceMultipleResultSetSupport: ");
		if (forceMultipleResultSetSupportESet) result.append(forceMultipleResultSetSupport); else result.append("<unset>");
		result.append(", lazyLoadingEnabled: ");
		if (lazyLoadingEnabledESet) result.append(lazyLoadingEnabled); else result.append("<unset>");
		result.append(", maxRequests: ");
		result.append(maxRequests);
		result.append(", maxSessions: ");
		result.append(maxSessions);
		result.append(", maxTransactions: ");
		result.append(maxTransactions);
		result.append(", statementCachingEnabled: ");
		if (statementCachingEnabledESet) result.append(statementCachingEnabled); else result.append("<unset>");
		result.append(", useColumnLabel: ");
		if (useColumnLabelESet) result.append(useColumnLabel); else result.append("<unset>");
		result.append(", useStatementNamespaces: ");
		if (useStatementNamespacesESet) result.append(useStatementNamespaces); else result.append("<unset>");
		result.append(')');
		return result.toString();
	}

} //SettingsTypeImpl
